﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Zhao.Models.Entity;

namespace Zhao.IServer.Log
{
    /// <summary>
    /// 日志
    /// </summary>
    public interface ILogsServer : IBaseService<Logs>
    {
        /// <summary>
        /// 级别：最低级别，最详细的日志
        /// 用途：记录程序执行的详细跟踪信息（如方法进入/退出、变量值等）
        /// 场景：开发调试时使用，生产环境通常关闭
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        Task Trace(string message);
        /// <summary>
        /// 级别：调试信息
        /// 用途：记录对调试有帮助的信息（如中间结果、非关键路径逻辑）
        /// 场景：开发或测试环境排查问题时使用
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        Task Debug(string message);
        /// <summary>
        /// 级别：错误
        /// 用途：记录可恢复的错误（如IO异常、网络超时等）
        /// 场景：需要调查但不会导致系统崩溃的问题
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        Task Error(string message);
        /// <summary>
        /// 级别：常规信息
        /// 用途：记录应用程序正常运行时的关键事件（如启动完成、用户登录等）
        /// 场景：生产环境监控系统运行状态
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        Task Info(string message);
        /// <summary>
        /// 级别：警告
        /// 用途：记录意外但可恢复的情况（如降级操作、非预期参数等）
        /// 场景：需要关注但不需要立即干预的问题
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        Task Warn(string message);
        /// <summary>
        /// 级别：最高级别，致命错误
        /// 用途：记录导致系统崩溃或无法恢复的错误（如内存溢出、关键依赖失效等）
        /// 场景：需要立即人工干预的严重问题
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        Task Fatal(string message);
    }
}
